home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / gemfsc18.lzh / AESSRC18.LZH / AESFUNCS / APLXINIT.C < prev    next >
C/C++ Source or Header  |  1992-04-07  |  4KB  |  93 lines

  1. /**************************************************************************
  2.  * APLXINIT.C - aplx_init(), apl_xexit() functions; new global data items.
  3.  *************************************************************************/
  4.  
  5. #include "gemfast.h"
  6.  
  7. #ifndef NULL
  8.   #define NULL 0L
  9. #endif
  10.  
  11. #undef appl_init  /* undo the remapping macros that gemfast.h sets up to */
  12. #undef appl_exit  /* get applications into here; we need The Real Thing. */
  13.  
  14. void    (*_AesVCleanup)() = NULL; /* Internal var shared with APLVWORK.C */
  15.  
  16. /*-------------------------------------------------------------------------
  17.  * new global data items (for use in gemfast utils and by application)...
  18.  *-----------------------------------------------------------------------*/
  19.  
  20. int     gl_grfhandle=0; /* global physical VDI handle                    */
  21. int     gl_wchar=0;     /* width of a character                          */
  22. int     gl_hchar=0;     /* height of a character                         */
  23. int     gl_wbox=0;      /* width of a boxchar                            */
  24. int     gl_hbox=0;      /* height of a boxchar                           */
  25. GRECT   gl_rwdesk={0};  /* coordinates of work area of the desktop       */
  26. GRECT   gl_rfscrn={0};  /* coordinates of the full screen                */
  27.  
  28. /*-------------------------------------------------------------------------
  29.  * apl_cleanup() - Clean up transient resources we've aquired.
  30.  *
  31.  *   For now, that means close the shared VDI workstation.  We do this
  32.  *   by calling through the vdi cleanup vector if it is non-NULL.  if 
  33.  *   the shared workstation was ever opened, the vector is set by the
  34.  *   apl_vopen() routine to point to the closer routine.  Since the 
  35.  *   actual vector variable lives in this module, and starts out as NULL,
  36.  *   we avoid making a direct call to the vdi cleanup, and thus we avoid
  37.  *   linking all the vdi groodah into a program that doesn't need it.
  38.  *
  39.  *   Right now, we don't use the options value.  Someday we are going to 
  40.  *   have transient and permenant resources, and the flag will indicate
  41.  *   whether the permenant resources are also to be cleaned up.
  42.  *-----------------------------------------------------------------------*/
  43.  
  44. void apl_cleanup(options)
  45.     int options;
  46. {
  47.     if (_AesVCleanup != NULL) {
  48.         (*_AesVCleanup)();
  49.     }
  50. }
  51.  
  52. /*-------------------------------------------------------------------------
  53.  * _ApXinit() - internal routine to init new global data items.
  54.  *
  55.  *   this is called from apl_xinit(), below, and also from apl_vopen().
  56.  *   the latter is a just-in-case call, on the off chance that the caller
  57.  *   never came through the extended init in the first place.
  58.  *-----------------------------------------------------------------------*/
  59.  
  60. void _ApXinit()
  61. {
  62.     gl_grfhandle = graf_handle(&gl_wchar, &gl_hchar, &gl_wbox, &gl_hbox);
  63.     winx_get(0, WF_WORKXYWH, &gl_rwdesk);
  64.     
  65.     /* gl_rfscrn x and y are already zero */
  66.     gl_rfscrn.g_w = gl_rwdesk.g_x + gl_rwdesk.g_w;
  67.     gl_rfscrn.g_h = gl_rwdesk.g_y + gl_rwdesk.g_h;
  68. }
  69.  
  70. /*-------------------------------------------------------------------------
  71.  * apl_xinit() - Extended init.  Does appl_init() plus fills in new global
  72.  *               data items.  A GEMFAST.H macro makes this routine get
  73.  *               invoked when the application calls appl_init().
  74.  *-----------------------------------------------------------------------*/
  75.  
  76. int apl_xinit()
  77. {
  78.     if (0 <= appl_init()) {
  79.         _ApXinit();
  80.     }
  81.     return gl_apid;
  82. }
  83.  
  84. /*-------------------------------------------------------------------------
  85.  * apl_xexit() - extended exit. call the cleanup routine, then appl_exit().
  86.  *-----------------------------------------------------------------------*/
  87.  
  88. void apl_xexit()
  89. {
  90.     apl_cleanup(APL_RTRANSIENT|APL_RPERMENANT);
  91.     appl_exit();
  92. }
  93.